// pages/profile/infoCenter/infoCenter.js
import { session } from '../../../api/session'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
      avatar: '/static/upload/default-avatar.jpg',
      nickname: '游客',
      hasPassword: false,
      password: '', // 存储密码信息
      phone: '',
      signature: ''
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('个人中心页面加载', options);
    this.loadUserInfo();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 页面显示时刷新用户信息
    this.loadUserInfo();
    
    // 如果密码为空，尝试从session获取
    setTimeout(() => {
      if (!this.data.userInfo.password) {
        console.log('密码为空，尝试从session获取');
        this.loadPasswordFromSession();
      }
    }, 1000);
  },

  /**
   * 加载用户信息
   */
  loadUserInfo() {
    // 从本地存储获取用户信息，并与默认值合并，避免空对象覆盖默认展示
    const stored = wx.getStorageSync('userInfo') || {};
    
    // 处理嵌套结构：如果存储的是 { userInfo: {...} }，则取 userInfo 部分
    const userData = stored.userInfo || stored;
    
    console.log('从本地存储获取的用户数据:', userData);
    
    const merged = {
      avatar: userData.avatar || '/static/upload/default-avatar.jpg',
      nickname: userData.nickname || '游客',
      hasPassword: !!userData.hasPassword,
      password: userData.password || '',
      phone: userData.phone || '',
      signature: userData.signature || ''
    };
    
    // 计算密码显示值
    merged.passwordDisplay = this.formatPasswordDisplay(merged.password);
    
    console.log('处理后的用户信息:', merged);
    console.log('密码显示值:', merged.passwordDisplay);
    
    this.setData({ userInfo: merged });
  },

  /**
   * 点击头像
   */
  onAvatarTap() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        // 这里可以上传头像到服务器
        this.setData({
          'userInfo.avatar': tempFilePath
        });

        // 保存到本地存储
        const userInfo = this.data.userInfo;
        wx.setStorageSync('userInfo', userInfo);

        wx.showToast({
          title: '头像更新成功',
          icon: 'success'
        });
      },
      fail: (err) => {
        console.error('选择头像失败:', err);
        wx.showToast({
          title: '选择头像失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 点击用户名/昵称
   */
  onNicknameTap() {
    wx.showModal({
      title: '修改昵称',
      editable: true,
      placeholderText: '请输入新昵称',
      success: (res) => {
        if (res.confirm && res.content) {
          this.setData({
            'userInfo.nickname': res.content
          });

          // 保存到本地存储
          const userInfo = this.data.userInfo;
          wx.setStorageSync('userInfo', userInfo);

          wx.showToast({
            title: '昵称修改成功',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 点击修改密码
   */
  onPasswordTap() {
    if (this.data.userInfo.hasPassword) {
      // 已有密码，跳转到修改密码页面
      wx.navigateTo({
        url: '/pages/login/forgetpassword/forgetpassword'
      });
    } else {
      // 未设置密码，跳转到设置密码页面
      wx.navigateTo({
        url: '/pages/login/forgetpassword/forgetpassword'
      });
    }
  },

  /**
   * 更新密码显示
   */
  updatePasswordDisplay() {
    const userInfo = this.data.userInfo;
    userInfo.passwordDisplay = this.formatPasswordDisplay(userInfo.password);
    this.setData({ userInfo });
  },

  /**
   * 从session获取密码信息
   */
  async loadPasswordFromSession() {
    try {
      const sessionRes = await session();
      console.log('从session获取密码:', sessionRes);
      
      if (sessionRes && sessionRes.code === 0 && sessionRes.data && sessionRes.data.password) {
        const userInfo = this.data.userInfo;
        userInfo.password = sessionRes.data.password;
        userInfo.hasPassword = true;
        userInfo.passwordDisplay = this.formatPasswordDisplay(userInfo.password);
        
        console.log('更新后的用户信息:', userInfo);
        
        this.setData({ userInfo });
        
        // 更新本地存储
        wx.setStorageSync('userInfo', userInfo);
        
        wx.showToast({
          title: '密码信息已更新',
          icon: 'success',
          duration: 1500
        });
      }
    } catch (error) {
      console.log('从session获取密码失败:', error);
    }
  },

  /**
   * 格式化密码显示：显示前3位，其余位为*
   */
  formatPasswordDisplay(password) {
    if (!password || password.length === 0) {
      return '未设置密码';
    }
    
    if (password.length <= 3) {
      return '***';
    }
    
    const firstThree = password.substring(0, 3);
    const stars = '*'.repeat(password.length - 3);
    return firstThree + stars;
  },

  /**
   * 点击手机号码
   */
  onPhoneTap() {
    wx.showModal({
      title: '绑定手机号',
      editable: true,
      placeholderText: '请输入手机号码',
      success: (res) => {
        if (res.confirm && res.content) {
          // 简单的手机号验证
          const phoneRegex = /^1[3-9]\d{9}$/;
          if (phoneRegex.test(res.content)) {
            this.setData({
              'userInfo.phone': res.content
            });

            // 保存到本地存储
            const userInfo = this.data.userInfo;
            wx.setStorageSync('userInfo', userInfo);

            wx.showToast({
              title: '手机号绑定成功',
              icon: 'success'
            });
          } else {
            wx.showToast({
              title: '请输入正确的手机号',
              icon: 'none'
            });
          }
        }
      }
    });
  }
})